<?php
/* Copyright 2023-2025
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

namespace app\api\services\admin\setting;

use app\api\common\service\BaseServices;
use app\api\common\traits\ServicesTrait;
use app\api\dao\admin\setting\RoleDao;

class RoleServices extends BaseServices
{
    use ServicesTrait;

    /**
     * 构造方法
     * RoleServices constructor.
     *
     * @param RoleDao $dao
     */
    public function __construct(RoleDao $dao)
    {
        $this->dao = $dao;
    }

    public function select($where): array
    {
        [$page, $limit] = $this->getPageValue();
        $list  = $this->dao->selectList($where, 'id, role_name, description, rules, status', $page, $limit, 'id ASC', [], true)->toArray();
        $count = $this->dao->count($where);
        //替换name

        //获得所有name，id为索引
        /** @var PermissionServices $service */
        $service = app()->make(\app\api\services\admin\setting\PermissionServices::class);
        $rules   = $service->getColumn([], "name", "id");
        //循环查找 rolesID并替换为 roles名称
        foreach ($list as &$item) {
            $item['rulesName'] = implode(',', array_keys_value($rules, $item['rules'], false, '【未知】'));
        }
        return compact('list', 'count');
    }
}